'''
data.txt中保存若干行文本。
请编写一个程序读取文件中文本，并统计输出文本的有效行数，
然后将结果保存到result.txt中。

程序代码必须保存到test.py中

输出格式：
有效行数为:6行
'''
c = 0
with open('data.txt','r',encoding = 'utf-8') as f:
    for x in f.readlines():
        if x != '\n':
            c = c+1
        
with open('result.txt','w') as g:
    g.write('有效行数为:{0}行'.format(str(c)))
g.close()


'''
file.txt中保存若干行文本。
请编写一个程序读取文件中文本，并统计输出文本的平均列数，

说明：
（1）有效行，指包含至少一个字符的行，不计算空行
（2）每行的列数为其有效字符数，不计算结束的换行符（“\n”）
（3）平均列数为有效行的列数平均值，即总列数/总有效行数，结果采用四舍五入方式取整数
（4）在本地编写测试完成后，把src文件压缩为src.zip文件后上传提交
然后将结果保存到result.txt中。

程序代码必须保存到test.py中

输出格式：
python程序设计:10
人生苦短，我 学python:14
程序设计:4
抽象过程:4
自动化求解  的计算思维:12
结合问题思考程序结构:10
平均列数为:9
'''
x = []
c = 0
with open('file.txt','r',encoding = 'utf') as f:
    lst = f.readlines()
    for i in range(len(lst)):
        if lst[i] != '\n':
            lst[i] = lst[i].strip()
            l = len(lst[i])
            c = c+l
            x.append('{0}:{1}'.format(lst[i],l))
with open('result.txt','w',encoding = 'utf') as g:
    for i in range(len(x)):
        g.write('{0}\n'.format(x[i]))
    a = c/len(x)
    g.write('平均列数为:{0}'.format(int(a)))
g.close()


'''
sample.txt中保存若干行文本。
请编写一个程序读取文件中文本，并统计文本中字符数量和每个字母字符的出现次数，

说明：
（1）忽略字母大小写，即大写字母A和小写字母a视作同一个字母

（2）仅统计字母字符，#/？'"!:,@%$&~()等特殊字符不统计，也不统计多余空格

（3）统计一共出现的字母字符总数，同时统计每个字母的出现次数，单个字母的统计结果按字典顺序输出，如a:5,b:13,c:3,d:9,e:10等

程序代码必须保存到test.py中

输出格式：
共467个字符，其中每个字母的分布情况为：
a:46, b:6, c:4, d:21, e:69, f:14, g:6, h:29, i:32, j:2, l:20, m:12, n:25, o:36, p:5, q:1, r:27, s:32, t:49, u:7, v:10, w:10, y:4
'''
x = []
a = 0
with open('sample.txt','r',encoding='utf') as f:
    fi = f.read()
    fi = fi.lower()
    for i in fi:
        if i.isalpha():
            a = a+1
    
    for i in 'abcdefghijklmnopqrstuvwxyz':
        c = fi.count(i)
        if c != 0:
            x.append('{0}:{1}'.format(i,c))
with open('result.txt','w',encoding='utf') as g:
    g.write('共{0}个字符，其中每个字母的分布情况为：\n'.format(a))
    g.write(', '.join(x))
g.close()
        
        
        
'''
data.txt中保存有n个单词，每个单词一行。
请编写一个程序从文件中将单词读出，找到最长的单词，
然后将其保存到result.txt中。程序须保存test.py中

输出格式：

用以下格式输出最长的字符串到**result.txt**中:
The longest word is: zhang
如果有多个单词，则每个单词用**英文逗号**间隔(结尾无**逗号**)：
The longest words are: zhang,xiang
'''
x1 = []
x2 = []
with open('data.txt','r') as f:
    fi = f.readlines()
    for i in range(len(fi)):
        fi[i] = fi[i].strip()
        x1.append(len(fi[i]))
    m = max(x1)
    for i in range(len(fi)):
        if len(fi[i]) == m:
            if fi[i] not in x2:
                x2.append(fi[i])
        
with open('result.txt','w') as g:
    if len(x2) == 1:
        g.write('The longest word is: {0}'.format(x2[0]))
    else :
        a = ','.join(x2)
        g.write('The longest words are: {0}'.format(a))
g.close()
        
        
        
'''
movie.txt中保存若干行记录。
comment.txt中保存有若干行记录。

请编写一个程序将两个文件的内容逐行合并，
然后将其保存到result.txt中。程序须保存test.py中

'''
f = open('movie.txt','r',encoding='utf')
g = open('comment.txt','r',encoding='utf')
h = open('result.txt','w',encoding='utf')
fi = f.readlines()
gi = g.readlines()
if len(fi) >= len(gi):
    for i in range(len(gi)):
        h.write(fi[i])
        h.write(gi[i])
    for i in range(len(gi),len(fi)):
        h.write(fi[i])
else:
    for i in range(len(fi)):
        h.write(fi[i])
        h.write(gi[i])
    for i in range(len(fi),len(gi)):
        h.write(gi[i])    
h.close()
        
        
        
